Funksione te tjera
Ne seksionet e mesiperme listuam dhe shpjeguam nder funksionet kryesore baze te PHP-se si funksione te stringave, te koleksioneve array, funksionet matematikore etj. Me poshte do te listojme disa funksione shume te perdorshme te cilat nuk i kemi grupuar ne nje grup specifik.
include
dhe require
Deklarata include
perfshin dhe vlereson nje skedar te specifikuar. Shpjegimi ne vijim vlen ne te njejten menyre edhe per deklaraten require
.
Skedaret perfshihen bazuar ne pathin qe i japim si argument ketij funksioni. Ne rast se nuk i jepet pathi i plote do te kontrollohet ne direktorine aktuale ku ndodhet skripti qe po ekzekutohet, perndryshe do te bazohet mbi pathin e plote (absolut). Ne rast se skedari nuk gjendet, deklarata include
do te shfaqe nje tekst paralajmerues, ndersa deklarata require
do te kaloje ne nje gabim fatal, pra do ta nderprese vazhdimin e ekzekutimit.
Kur nje skedar perfshihet ne nje skedar tjeter me ane te deklaratave te mesiperme, variablat (globale) do te trashegohen dhe do te jete e mundur perdorimi i tyre edhe ne skriptin perfshires (ne te njejten menyre sikur t'i kishim deklaruar ne ate rresht ku behet perfshirja).
Shembull:
<?php
//Skedari vars.php
$ngjyra = 'jeshile';
$fruti = 'molle';
?>
---------------------------------
<?php
//Skedari test.php
echo "Nje $fruti $ngjyra"; //Rezultati: Nje
include 'vars.php'; //Perfshirja
echo "Nje $fruti $ngjyra"; //Rezultati: Nje molle jeshile
?>
Duke pare rezultatet, veme re qe ne rastin e pare te printimit variablat $fruti
dhe $ngjyra
nuk permbajne vlere, ndaj nuk do te printohet gje ne pozicionin e tyre, printohet vetem Nje
. Ndersa ne rastin e dyte, duke qene se kemi perfshire skedarin vars.php
, ai permban keto dy variabla me vlere. Ne kete rast, PHP-ja i trajton variablat e skedarit te perfshire vars.php
ne te njejten menyre sikur ato te ishin deklaruar ne skriptin test.php
. Per kete arsye, ne rastin e dyte rezultati i printimit eshte Nje molle jeshile
.
include_once
dhe require_once
Deklarata include_once
perfshin dhe vlereson skedarin e specifikuar gjate ekzekutimit te skriptit. Eshte nje sjellje e ngjashme me deklaraten include
, me ndryshimin e vetem qe ne rast se kodi nga skedari eshte perfshire njehere me perpara, ai nuk do te perfshihet perseri dhe include_once
do te ktheje TRUE
. Pra, skedari do te perfshihet vetem njehere. E njejta gje ndodh edhe me require_once
e cila nqs. skedari nuk gjendet do te gjeneroje nje gabim fatal, pra e njejte me deklaraten require
.
isset
bool isset ( $var [, $... ] )
Kontrollon nqs. nje variabel eshte vendosur, dhe nuk eshte NULL
. Qe nje variabel te jete vendosur duhet qe ajo te jete deklaruar diku dhe te kete vlere te ndryshme nga NULL
. Nqs. nje variabel eshte hequr me ane te funksionit unset()
atehere ajo quhet e pavendosur, dhe ne rast se kalohet tek funksioni isset()
, do te kthehet FALSE
. isset()
do te ktheje FALSE
edhe ne rast se nje variabel qe testohet ka vleren NULL
.
Nqs. kalohen disa variabla tek funksioni isset
atehere do te kthehet TRUE
vetem ne rastin kur te gjitha variablat jane te vendosura.
Shembull:
$var = '';
// Variabli $var eshte vendosur me lart, ndaj isset($var) do te ktheje TRUE
//Teksti do te printohet
if (isset($var)) {
echo "Variabli eshte vendosur keshtu qe teksti do te printohet.";
}
// In the next examples we'll use var_dump to output
// the return value of isset().
$a = "test";
$b = "testtjeter";
var_dump(isset($a)); //Rezultati: TRUE
var_dump(isset($a, $b)); //Rezultati: TRUE
unset ($a);
var_dump(isset($a)); //Rezultati: FALSE
var_dump(isset($a, $b)); //Rezultati: FALSE
$c = NULL;
var_dump(isset($c)); //Rezultati: FALSE
isset
eshte e vlefshme edhe per elementet e nje array. Pra, mund te kontrollojme nqs. nje element eshte i vendosur apo jo.
$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));
var_dump(isset($a['test'])); //Rezultati: TRUE
var_dump(isset($a['foo'])); //Rezultati: FALSE
var_dump(isset($a['hello'])); //Rezultati: FALSE
// Celesi 'hello' eshte NULL keshtu qe konsiderohet i pavendosur
// Kontrolli i array-t te brendshem
var_dump(isset($a['pie']['a'])); //Rezultati: TRUE
var_dump(isset($a['pie']['b'])); //Rezultati: FALSE
var_dump(isset($a['cake']['a']['b'])); //Rezultati: FALSE
header
void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
header
perdoret kur duam te dergojme nje header ne nje pergjigje HTTP. P.sh. kur duam te ridrejtojme faqen ne nje faqe tjeter perdorim nje header te tipit "Location:"
. Le ta zeme qe nje vizitor i caktuar klikon mbi butonin login
per te hyre ne sistem. Ne fillim kontrollojme nqs. kredencialet (username dhe password) te futura nga vizitori jane te sakta. Ne rast se jane te sakta duhet ta ridrejtojme faqen per tek faqja e panelit te administrimit. Per te bere ridrejtimin perdorim funksionin header()
duke i kaluar si argument te pare stringen Location: home.php
, ku home.php
eshte faqja e panelit te administrimit.
Duhet te kemi kujdes pasi funksioni header()
mund te therritet perpara se ndonje pergjigje tjeter te kete filluar te behet per tek brouser i vizitorit, p.sh. rasti i meposhtem nuk eshte i sakte:
<html>
<head></head>
<body>
<?php
$kredencialet = true;
if($kredencialet) {
header('Location: home.php');
}
?>
</body>
</html>
Arsyeja pse nuk eshte i sakte ka te beje me faktin qe duke qene se kodi PHP eshte shkruajtur pas etiketes <body>
, nje pergjigje per kete faqe ka nisur dhe akoma s'ka perfunduar, pasi kemi thene qe kodi HTML dergohet si pergjigje menjehere nga kompiluesi i PHP-se, dhe ne kete rast kodi i meposhtem:
<html>
<head></head>
<body>
i cili eshte ne krye te faqes ka nisur te dergohet menjehere tek klienti. Duke qene se ky kod eshte derguar atje, nuk mund ta leme pergjigjen pa perfunduar keshtuqe funksioni header('Location: home.php')
nuk eshte i vlefshem ne ate pozicion ku eshte shkruar.
Per te rregulluar problemin e mesiperm, organizojme kodin si me poshte:
<?php
$kredencialet = true;
if($kredencialet) {
header('Location: home.php');
}
?>
<html>
<head></head>
<body>
</body>
</html>
Ne kete rast, kodi PHP qe permban funksionin header()
eshte vendosur ne krye te dokumentit, perpara kodit HTML. Ne rast se ekzekutohet funksioni header
, nuk do te kemi pergjigje te meparshme ne procesim, keshtuqe ridrejtimi tek nje faqe tjeter do te funksionoje me sukses.
Argumenti i dyte opsional $replace
tregon nqs. header-at qe kane ekzistuar me pare do te mbishkruhen apo do te shtojme nje header te ri shtese. Nqs. kalojme FALSE
mund te kalojme disa header-a:
header('WWW-Authenticate: Negotiate');
//Ky header shtohet shtese, dhe nuk e mbishkruan te parin
header('WWW-Authenticate: NTLM', false);
Ne argumentin i trete opsional $http_response_code
, mund te percaktojme kodin (p.sh. 404, 503 etj...) qe do ti shoqerohet pergjigjes qe do t'i kthehet brouserit.